package clases.academico;


import CapaDatos.DataSource;
import CapaDatos.Sql;
import clases.incio.ButtonEditor;
import clases.incio.ButtonRenderer;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class Competencia extends Alumno{
    
    private String tipoCompetencia;
    private String descripcionCompetencia;
    private final DataSource dt;
    private String sql;  

   public Competencia() {
       dt=new DataSource();
    }

       
    public String getTipoCompetencia() {
        return tipoCompetencia;
    }

    public void setTipoCompetencia(String tipo) {
        this.tipoCompetencia = tipo;
    }

    public String getDescripcionCompetencia() {
        return descripcionCompetencia;
    }

    public void setDescripcionCompetencia(String descripcion) {
        this.descripcionCompetencia = descripcion;
    }
    
    private int MaxIdCompetencia(){
     return Sql.getMax("IDCOMPETENCIA","COMPETENCIA", true);
    }
    
    public boolean ExistenciaCompetencia(String dato, String cedula) {
        sql = "SELECT * FROM COMPETENCIA JOIN ALUMNO "
                + "ON ALUMNO.CEDULARUC=COMPETENCIA.CEDULARUC "
                + "WHERE COMPETENCIA.CEDULARUC='" + cedula + "' "
                + "AND TIPO='" + dato + "' ";
        return Sql.isExiste(sql);
    }
	
   public boolean guardarCompetencia() {
        sql="INSERT INTO COMPETENCIA VALUES('"+this.MaxIdCompetencia()
                + "','" + this.getCedulaAlumno() + "','" + tipoCompetencia + "', "
                + "'"+descripcionCompetencia+"')";
        return Sql.insertar(sql);
   }
   
   public void eliminarCompetencia(){
   sql="DELETE FROM COMPETENCIA WHERE CEDULARUC='"+this.getCedulaAlumno()+"'";
   Sql.eliminar(sql);
   }
   
   public boolean eliminarCompetencia(String dato, String cedula) {
        if (global.Mensajes.mostrarPregunta("¿Realmente desea eliminar el dato de Competencia del Alumno?") == true) {
            sql = "DELETE FROM COMPETENCIA WHERE CEDULARUC = '" + cedula + "' AND TIPO='" + dato + "'";
            return Sql.eliminar(sql);
        }
        return false;
    }
   
   public boolean actualizarCompetencia(){
     sql="UPDATE COMPETENCIA TIPO='"+this.tipoCompetencia+"', "
            + "DESCRIPCION='"+this.descripcionCompetencia+"', "
            + "WHERE CEDULARUC='"+this.getCedulaAlumno()+"'";
     return Sql.actualizar(sql);
    
    }
   
   public void listarDatoCompetencia(JComboBox cbo) {
        cbo.removeAllItems();
        cbo.addItem("--Seleccione--");
        sql = "SELECT DISTINCT TIPO FROM COMPETENCIA";

        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            cbo.addItem(dt.getString(1));
        }
        cbo.setSelectedIndex(0);
    }
   
   public void llenardatosCompetencia(DefaultTableModel modelo, JTable tabla, String cedula){
    sql="SELECT * FROM COMPETENCIA JOIN ALUMNO "
         + "ON ALUMNO.CEDULARUC=COMPETENCIA.CEDULARUC "
         + "WHERE ALUMNO.CEDULARUC='"+cedula+"'";
    
    Sql.getConsulta(sql, dt);
     String []fila;
  
    while(dt.next()){
    fila=new String[4];
    fila[0]=dt.getString(3);
    fila[1]=dt.getString(4);
       
    tabla.getColumnModel().getColumn(2).setCellRenderer(new ButtonRenderer());
    tabla.getColumnModel().getColumn(2).setCellEditor(
    new ButtonEditor(new JCheckBox(), modelo, tabla));
  
    modelo.addRow(fila);
   
      }
    }    
   
    public String SqlGeneralCompetencia() {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) AS ALUMNO, TIPO, DESCRIPCION \n"
                + "FROM COMPETENCIA JOIN ALUMNO ON ALUMNO.CEDULARUC=COMPETENCIA.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC ORDER BY(ALUMNO)";
        return sql;
    }

    public String SqlCedulaCompetencia(String cedula) {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) AS ALUMNO, TIPO, DESCRIPCION \n"
                + "FROM COMPETENCIA JOIN ALUMNO ON ALUMNO.CEDULARUC=COMPETENCIA.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC "
                + "WHERE ALUMNO.CEDULARUC LIKE ('" + cedula + "%') ORDER BY(ALUMNO)";
        return sql;
    }

    public String SqlAlumnoCompetencia(String alumno) {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) AS ALUMNO, TIPO, DESCRIPCION \n"
                + "FROM COMPETENCIA JOIN ALUMNO ON ALUMNO.CEDULARUC=COMPETENCIA.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC  "
                + "WHERE CONCAT(APELLIDO,' ',NOMBRE) LIKE ('" + alumno + "%') ORDER BY(ALUMNO)";
        return sql;
    }

    public String SqlDatoCompetencia(String dato) {
        sql = "SELECT ALUMNO.CEDULARUC, CONCAT(APELLIDO,' ',NOMBRE) AS ALUMNO, TIPO, DESCRIPCION \n"
                + "FROM COMPETENCIA JOIN ALUMNO ON ALUMNO.CEDULARUC=COMPETENCIA.CEDULARUC \n"
                + "JOIN PERSONA ON PERSONA.CEDULARUC=ALUMNO.CEDULARUC "
                + "WHERE TIPO = '" + dato + "' ORDER BY(ALUMNO)";
        return sql;
    }

    public void ConsultaCompetencia(DefaultTableModel modelo, JTable tabla, String sql, JLabel Lpaginatotal, JLabel Lpagina, int pagina) {
        modelo = new DefaultTableModel() {
            @Override
            public boolean isCellEditable(int fila, int columna) {
                return false;
            }
        };
        tabla.setModel(modelo);
        modelo.addColumn("Nº");
        modelo.addColumn("CEDULA");
        modelo.addColumn("ALUMNO");
        modelo.addColumn("DATO DE COMPETENCIA");
        modelo.addColumn("DESCRIPCION");

        DefaultTableCellRenderer centrar = new DefaultTableCellRenderer();
        centrar.setHorizontalAlignment(SwingConstants.CENTER);
        tabla.getColumnModel().getColumn(0).setCellRenderer(centrar);
        TableColumn columna = new TableColumn();
        columna = tabla.getColumnModel().getColumn(0);
        columna.setPreferredWidth(20);
        columna = tabla.getColumnModel().getColumn(1);
        columna.setPreferredWidth(40);
        columna = tabla.getColumnModel().getColumn(2);
        columna.setPreferredWidth(250);
        columna = tabla.getColumnModel().getColumn(3);
        columna.setPreferredWidth(250);
        columna = tabla.getColumnModel().getColumn(4);
        columna.setPreferredWidth(400);
        sql = objPaginacion.getPaginacion(sql, pagina, 50);
        Sql.getConsulta(sql, dt);
        String[] fila;
        int n = (pagina * 50) - 49;
        while (dt.next()) {
            fila = new String[5];
            fila[0] = Integer.toString(n);
            fila[1] = dt.getString(1);
            fila[2] = dt.getString(2);
            fila[3] = dt.getString(3);
            fila[4] = dt.getString(4);

            modelo.addRow(fila);
            n++;
        }
        objPaginacion.actualPagina(Lpagina);
        objPaginacion.totalPaginas(Lpaginatotal);
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }
   
}